﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Systemet.Domain
{
    class Aktivitetsregister
    {
        private LinqToSQLDataContext database;
        private bool successfull = false;
        private string connection = "";

        public bool validatePersonal(Aktivitet aktivitetsObject, bool isNew)
        {
            connection = AccessController.Instance.Connection;
            database = new LinqToSQLDataContext(connection);

            var nyAKtivitet = from Aktivitetsregister in database.Aktivitetsregister
                             where Aktivitetsregister.aktivitetsID == aktivitetsObject.AktivitetsID
                             select Aktivitetsregister.aktivitetsID;

            if (!nyAKtivitet.Contains(aktivitetsObject.AktivitetsID) && isNew == true)
            {
                successfull = Aktivitetsregistrering(aktivitetsObject);
            }
            else if (!nyAKtivitet.Contains(aktivitetsObject.AktivitetsID) && isNew == false)
            {
                successfull = Updateaktivitetregister(aktivitetsObject);
            }
            return successfull;
        }

        private bool Aktivitetsregistrering(Aktivitet aktivitetsObject)
        {
            try
            {
                Aktivitetsregister nyAktivitet = new Aktivitetsregister;
                {
                    aktivitetsID = generateAktivitetsID(),
                    aktivitet = aktivitetsObject.Aktivitetnamn,
                    datumFran = aktivitetsObject.DatumFran,
                    datumTill = aktivitetsObject.DatumTill,
                    signatur = aktivitetsObject.Signerad,

                    //
                    //HOW TO SOLVE AVDELNINGAR?? :-)
                    //

                };

                database.Aktivitetregister.InsertOnSubmit(nyAktivitet);
                database.SubmitChanges();
                return true;
            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString());
                return false;
            }
        }

        private bool Updateaktivitetregister(Aktivitet aktivitetsObject)
        {
            Aktivitetsregister uppdateraAktiviteter = database.Aktivitetsregister.Single(p => p.AktivitetsID == aktivitetsObject.AktivitetsID);
            try
            {
                uppdateraAktiviteter.aktivitet = aktivitetsObject.Aktivitetnamn;
                uppdateraAktiviteter.datumFran = aktivitetsObject.DatumFran;
                uppdateraAktiviteter.datumTill = aktivitetsObject.DatumTill;
                uppdateraAktiviteter.andratDatum = aktivitetsObject.AndratDatum;
                uppdateraAktiviteter.signatur = aktivitetsObject.Signerad;


                database.SubmitChanges();
                return true;
            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString());
                return false;
            }
        }

        private string generateAktivitetsID()
        {
            string AktivID = "UTV1AKTIV";
            return AktivID;
        }
    }
}
